
package com.xbongbong.paas.domain.entity;

import com.xbongbong.paas.toolbox.util.StringUtil;
import com.xbongbong.paas.toolbox.wrap.Entity;
import com.xbongbong.pro.constant.I18nStringConstant;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.context.i18n.LocaleContextHolder;

import java.util.Locale;
import java.util.Objects;

/**
* @author autoGen
* @time 2018-07-26 10:11:33
 *
 * 修改时间： 2019-1-3 19:53 何卡特 get/set方法改用lombok实现
*/
@Getter
@Setter
@ToString
public class PaasAppEntity extends Entity {

	private static final long serialVersionUID = 8808649896134598592L;

	//========== properties ==========

	/**
	* 主键
	*/
	private Long id;

	/**
	* 公司id
	*/
	private String corpid;

	/**
	* 应用名称
	*/
	private String name;

	/**
	 * 应用名称英文版
	 */
	private String nameEn;

	/**
	* 应用图标
	*/
	private String icon;

	/**
	* 颜色，16进制色，如 FF0000
	*/
	private String color;

	/**
	* 应用类型，1为saas应用，2为自建应用
	*/
	private Integer saasMark;

	/**
	* 排序字段
	*/
	private Integer sort;

	/**
	* 创建者userId
	*/
	private String creatorId;

	/**
	* 创建时间时间戳
	*/
	private Long addTime;

	/**
	* 更新时间时间戳
	*/
	private Long updateTime;

	/**
	* 删除标记
	*/
	private Integer del;

	/**
	 * saas应用标示，如crm
	 */
	private String alias;

	/**
	 * 是否启用，1启用，0不启用
	 */
	private Integer enable;

	/**
	 * 是否显示，1显示，0：隐藏
	 * 此字段主要用于产品管理和资金管理中；
	 * 产品管理需要crm开启才显示，并且可以作为应用参与排序
	 * 资金管理中的回款管理和发票管理crm开启才显示，库存管理则随进销存的显示而显示；并且资金管理也可以作为应用参与排序
	 */
	private Integer display;

	/**
	 * 套餐状态，0无效，1有效
	 * 0：开通，1：启用/关闭
	 */
	private Integer status;

	public PaasAppEntity() {
		this.del = 0;
		this.enable = 1;
		this.alias = "";
		this.display = 1;
	}


	public String getName() {
		Locale locale = LocaleContextHolder.getLocale();
		if (Objects.equals(locale.getLanguage(), I18nStringConstant.ENGLISH_LANGUAGE)&& StringUtil.isNotEmpty(nameEn)) {
			return nameEn;
		}
		return name;
	}

	public String getNameEn() {
		Locale locale = LocaleContextHolder.getLocale();
		if (Objects.equals(locale.getLanguage(), I18nStringConstant.ENGLISH_LANGUAGE)) {
			return name;
		}
		return nameEn;
	}
}
